웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > php

[php] 경로 제외한 파일 이름만 선택하는 방법, basename()

Last Modified : 2020-07-21 / Created : 2015-11-19
26,136
View Count

웹사이트 구축시 파일 이름을 알아야 하는 경우가 있을 수 있습니다. 이런 경우 파일의 이름을 알기 위한 함수가 많이 존재합니다. 이 중에서 우리는 파일 이름 전체가 아닌 일부만 필요하다고 생각해보겠습니다.

이 경우 어떻게 해야 할까요? 만약 파일 이름만 필요하여 확장자를 제외하는 경우가 있다면 그 방법은 무엇일까요? 문자열 기준으로 자르거나 분리하는 방법을 사용할 수도 있겠지만 다행히 php는 순수 파일 이름만 반환하는 유용한 함수를 제공하고 있습니다. 오늘 알아볼 basename() 함수가 그것이죠. 아래는 간단한 사용방법입니다.

basename($test, option value)


위와같이 첫번째 인자는 순수 파일명만 가져올 변수를 설정하고 두번째 인자는 선택사항입니다. 선택사항에 특정 확장자를 넣을 경우 해당하는 확장자 역시 보여주지 않게됩니다. 즉 확장자 명도 삭제되죠... 그럼 아래 예제를 봐주세요.




# basename() 함수를 사용한 예제보기

아래는 basename() 함수를 사용한 간단한 예제입니다.
<?php
   $pathName = '/uploadfile/sampleimage.jpg';
   $modName = basement($pathName);

   echo $modName;
   // 함수를 적용하여 이름만 출력
?>

위 함수를 실행하면 아래와 같이 출력될 것입니다.
sampleimage.jpg

매우 간단하게 경로를 삭제하였죠? 파일 경로를 삭제하기 위해 정규표현식이나 explode()함수를 사용하여 특정 문자를 삭제할 수도 있겠지만 간단하지 않습니다. 이 방법은 간단한 사용과 함께 순수 이름을 반환해줍니다. 만약 뒤의 확장자도 안보여주려면 어떻게 해야할까요? 두번째 인자가 필요하겠죠!!


! 확장자도 삭제하는 방법 보기

이번에는 확장자 역시 함께 삭제합니다.
<?php
   $pathName = '/uploadfile/sameimage.jpg';
   $modName = basement($pathName, 'jpg');
   // 두번째 매개변수를 입력함

   $echo modName;
?>

위 예제와의 차이점으로 두번째 인자에 확장자명인 'jpg'를 추가하였습니다. 이 인자로 인해 파일명에 포함된 jpg 확장자는 삭제됩니다. 아래와 같이 출력될 것이라 예상할 수 있습니다.
sampleimage.

실행해보면 뒤에 구둣점이 들어가게됩니다. 만약 구둣점을 함께 제거해주려면? 확장자 앞에 . 기호를 추가하는 것으로 가능합니다. 아래처럼 말이죠...
$modName = basename($pathName, '.jpg');


우리가 원하는대로 확장자(extension)가 사라지고 파일 이름의 접두어만 반환해 주었습니다. 이럴 필요가 있을까 생각해 볼수도 있겠지만 파일 전체 이름의 중간에 특정 단어를 추가한다는 등 의외로 쓰임새가 많이 있을 수 있습니다. 예를들어 아래와 같이 만들 수 있죠.
sampleimage_test.jpg

보시는 것처럼 _test를 추가하였습니다.

아래의 글도 찾고 계시지 않나요?

    Previous

    쿠키 확인 후 만료시 세션 파괴하는 방법

    Previous

    [PHP] 배열로 여러개의 변수를 생성하기, list()